/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utilisateurs.gestionnaires;

import java.util.Collection;  
import java.util.List;
import javax.ejb.Stateless;  
import javax.persistence.EntityManager;  
import javax.persistence.PersistenceContext;  
import javax.persistence.Query;  
import utilisateurs.modeles.Utilisateur;
import java.util.Random;  
/**
 *
 * @author Marcouss
 */
@Stateless
//@LocalBean
public class GestionnaireUtilisateurs {  
    // Ici injection de code : on n'initialise pas. L'entity manager sera créé  
    // à partir du contenu de persistence.xml  
    @PersistenceContext  
    private EntityManager em;  
    
   
    public int creeUtilisateur(String nom, String prenom, String login,String password,String mail){
        Query q = em.createQuery("select u.login from Utilisateur u where u.login ='"+ login+ "'");
        //List<Object> empData = null;
        if(q.getResultList().isEmpty()){
            System.out.println("le login n'existe pas " + login);
            Utilisateur u = new Utilisateur(nom, prenom, login,password,mail);
            em.persist(u);
            return 1;
        }
        else{ // Login déjà existant
            System.out.println("le login existe déjà " + login);
            return -1  ;
        }
    }
    public void deleteUtilisateur(String login) {  
        System.out.println(login);
        Query q = em.createQuery("DELETE FROM Utilisateur u WHERE u.login = '"+login+"'");
        System.out.println(login);
        //"UPDATE Employee e SET e.salary = e.salary + 100 WHERE e.name = :name");
        q.executeUpdate();
        System.out.println(login);
        //em.persist(q);
    }
    public boolean verifierUtilisateur(String login,String mdp){
        creeUtilisateur("Chamly","Marc","Admin","admin","mail");
        Query q = em.createQuery("select u from Utilisateur u where u.login ='"+ login+ "' AND u.password='"+ mdp +"'");
        Collection<Utilisateur> u = q.getResultList(); 
        if(!u.isEmpty()){
            System.out.println("mdp valide");
            return true;
        }
        else {
            System.out.println("mdp invalide");
            return false;
        }
    }
    
    public void updateUtilisateur(String nom, String prenom, String mail, String login) { 
        Query q = em.createQuery("UPDATE Utilisateur u SET u.firstname = '"+ prenom +"', u.lastname = '" + nom +"', u.mail='"+ mail +"' WHERE u.login = '" + login + "'");
        //"UPDATE Employee e SET e.salary = e.salary + 100 WHERE e.name = :name");
        q.executeUpdate();
        //em.persist(q);
        System.out.println(nom + "  " + prenom + " " + login);
    }  
    
  
    public Collection<Utilisateur> getAllUsers() {  
        // Exécution d'une requête équivalente à un select *  
        Query q = em.createQuery("select u from Utilisateur u");  
        return q.getResultList();  
    }
    
    public int getPageTotal(){
        Query q = em.createQuery("select u from Utilisateur u");
        int total = q.getResultList().size();
        return total;
    }
    public Collection<Utilisateur> getSomeUsers(int x, int page) {  
        Query q = em.createQuery("select u from Utilisateur u ORDER BY u.login");
        
        q.setMaxResults(x);
        System.out.println("Numero de la page : "+ page +" et nombre d'User :  "+ x);
        //int test = ((page-1)*x)+1;
        q.setFirstResult(((page-1)*x)+1);
        return q.getResultList();  
    } 
    // Add business logic below. (Right-click in editor and choose  
    // "Insert Code > Add Business Method") 
    
    public Collection<Utilisateur> getUtilisateurLogin(String nom){
        Query q = em.createQuery("select u from Utilisateur u where u.login =  '"+nom+"'");
        
        return q.getResultList();
    }
    
    public Collection<Utilisateur> getUtilisateur(String log){
        Query q = em.createQuery("select u from Utilisateur u where u.login =  '"+log+"'");
        
        return q.getResultList();
    }
}  